package com.dragon.refect.error;

/**
 * 虚拟机栈与本地方法栈OOM测试
 * VM args: -Xss160k 代表的意思是虚拟机栈的容量为160k
 *
 * 在单个线程下，不论是栈帧太大，还是虚拟机容量太小，当内存无法分配时，虚拟机抛出的都是StackOverflowError等异常
 * @author dragon
 * @since 2019/11/30
 */
public class JavaVMStackSOF {

    private int stackLength = 0;

    public void stackLeak() {
        stackLength++;
        stackLeak();
    }

    public static void main(String[] args) {
        JavaVMStackSOF javaVMStackSOF = new JavaVMStackSOF();
        try {
            javaVMStackSOF.stackLeak();
        } catch (Throwable e) {
            System.out.println("stack length:" + javaVMStackSOF.stackLength);
            throw e;
        }
    }
}
